import cv2 as cv
import os
from imutils import paths
import pickle
image_paths = list(paths.list_images('.'))#生成jpg文件列表
#os.path.sep路径分隔符
# 1. 创建级联分类器
face_cascade = cv.CascadeClassifier()
# 2. 引入训练好的可用于人脸识别的级联分类器模型
face_cascade.load("haarcascade_frontalface_alt.xml")
# 3. 用此级联分类器识别图像中的所有人脸信息，返回一个包含有所有识别的人联系系的列表
# 列表中每一个元素包含四个值：面部左上角的坐标(x,y) 以及面部的宽和高(w,h)
#faces = face_cascade.detectMultiScale(img_gray)
Y=[]
X=[]
for i in range(len(image_paths)):
    img=cv.imread(image_paths[i])
    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    img_gray = cv.equalizeHist(img_gray)  # 对图像进行直方图增强
    faces = face_cascade.detectMultiScale(img_gray)
    for (x, y, w, h) in faces:
        face = img_gray[y:y + h, x:x + w]
        face=cv.resize(face,(32,32))
        X.append(face.ravel())
        Y.append(image_paths[i].split(os.path.sep)[1].split('.')[0].split('_')[0])
with open('X','wb') as f:
    pickle.dump(X,f)
with open('Y','wb') as f:
    pickle.dump(Y,f)